﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Utility;
using Data;

namespace DataAccess
{
    public class GiaoVienControl
    {
        // tạo đối tượng của lớp LinqUtility , đối tương này sẽ xử lý trên bảng Giáo viên
        LinqUtility<GiaoVien> context = new LinqUtility<GiaoVien>();

        // Tạo đối tượng database của linq
        QuanLyPhongHocDataContext db = new QuanLyPhongHocDataContext();

        // Lấy danh sách toàn bộ các giáo viên
        public List<GiaoVien> GetListGiaoVien()
        {
            return context.GetAll();
        }

        // Lấy MAGV lớn nhất trong bảng giáo viên
        private string GetMaxId()
        {
            var query = (from q in db.GiaoViens
                        select q.MaGV).Max();
            return query.ToString();
        }

        // tạo MaGV tự động
        public string GenerateMaGV()
        {
            string newId = "";
            if (this.GetListGiaoVien().Count == 0)
            {
                newId = "GV000001";
            }
            else
            {
                string id = this.GetMaxId();
                int magv = Convert.ToInt32(id.Remove(0, 2)) + 1;
                newId = "GV" + magv.ToString("00000#");
            }
            return newId;
        }

        // insert giáo viên
        public void InsertGiaoVien(GiaoVien gv)
        {
            context.Insert(gv);
        }

        // update giáo viên
        public void UpdateGiaoVien(GiaoVien gv)
        {
            context.Update(gv); ;
        }

        // xóa giáo viên
        public void DeleteGiaoVien(GiaoVien gv)
        {
            context.Delete(gv);
        }

        // Lấy 1 giáo viên dựa theo MaGV
        public GiaoVien GetGiaoVienByMaGV(string magv)
        {
            var gv = (from g in db.GiaoViens
                      where g.MaGV.Equals(magv)
                      select g).SingleOrDefault();
            return gv;
        }

        // Kiểm tra password giáo viên nhập vào đúng hay sai (dùng để đổi password )
        public bool KiemTraPassword(string user , string pass)
        {
            var p = (from g in db.GiaoViens
                     where g.MaGV.Equals(user) && g.Password.Equals(pass)
                     select g).ToList().Count;

            if ( p==0 )
                return false;
            else
                return true;
        }

        // kiểm tra đăng nhập của giáo viên
        public GiaoVien CheckGiaoVienLogin(string user, string pass)
        {
            var gt = (from gv in db.GiaoViens
                      where gv.MaGV.Equals(user) && gv.Password.Equals(pass) && gv.LoaiTK.Equals("Giao Vien")
                      select gv).Single();

            return gt;
        }


    }
}
